﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Globalization;
using projecto_asp.Models;
using System.Diagnostics;

namespace projecto.Controllers
{
    public class AlunoController : Controller
    {
        //
        // GET: /Aluno/

        private bd1Entities db = new bd1Entities();

        public ActionResult Index(string ano = "", string mes = "")
        {

            /*-------*/
            ViewBag.log_out = true;
            ViewBag.coordenador = false;
            ViewBag.hora = DateTime.Now.ToString("dd-MMMM-yyyy HH:mm");
            /*-------*/

            /* código necessário para o calendário */
            int mes_local = Int32.Parse(DateTime.Now.Month.ToString());
            if (mes != "")
            {
                mes_local = Int32.Parse(mes);
            }

            int ano_local = Int32.Parse(DateTime.Now.Year.ToString());
            if (ano != "")
            {
                ano_local = Int32.Parse(ano);
            }

            int mes_antes = mes_local - 1;
            int mes_depois = mes_local + 1;

            if (mes_depois == 13)
            {
                ViewBag.mes_antes = 11;
                ViewBag.mes_depois = 1;
                ViewBag.ano_antes = ano_local;
                ViewBag.ano_depois = ano_local + 1;
                ViewBag.nome_mes = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(mes_local) + "/" + ano_local;
            }
            else if (mes_antes == 0)
            {
                ViewBag.mes_antes = 12;
                ViewBag.mes_depois = 2;
                ViewBag.ano_antes = ano_local - 1;
                ViewBag.ano_depois = ano_local;
                ViewBag.nome_mes = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(mes_local) + "/" + ano_local;
            }
            else
            {
                ViewBag.ano_antes = ano_local;
                ViewBag.ano_depois = ano_local;
                ViewBag.mes_antes = mes_antes;
                ViewBag.mes_depois = mes_depois;
                ViewBag.nome_mes = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(mes_local) + "/" + ano_local;
            }

            inscricaoDisciplina modelInscricao = new inscricaoDisciplina();
            disciplina modelDisciplina = new disciplina();
            calendarModel modelCalendario = new calendarModel();

            modelCalendario.ano = ano_local;
            modelCalendario.mes = mes_local;

            int cod_aluno = Int32.Parse(RouteData.Values["Id"].ToString());
            modelInscricao.id_aluno = cod_aluno;
            ViewBag.cod_aluno = cod_aluno.ToString();

            string ano_letivo = modelCalendario.getAnoLetivoAtual();
            ViewBag.ano_letivo = ano_letivo;
            ViewBag.lista_dias = modelCalendario.dadosPreenchimentoCalendario(cod_aluno, false);

            /* Lista de disciplinas a mostrar */
            
            var lista_cod_disciplina_inscrito = modelInscricao.getDisciplinaInscrito(ano_letivo);
            var lista_disciplinas = modelDisciplina.getNomeDisciplinas(lista_cod_disciplina_inscrito);
            ViewBag.lista_disciplinas = lista_disciplinas;

            return View();
        }

        public ActionResult verAvaliacoes(int cod_disciplia)
        {

            /*-------*/
            ViewBag.log_out = true;
            ViewBag.coordenador = false;
            ViewBag.hora = DateTime.Now.ToString("dd-MMMM-yyyy HH:mm");
            /*-------*/

            inscricaoDisciplina modelInscricao = new inscricaoDisciplina();
            disciplina modelDisciplina = new disciplina();
            calendarModel modelCalendario = new calendarModel();

            int mes_local = Int32.Parse(DateTime.Now.Month.ToString());
            int ano_local = Int32.Parse(DateTime.Now.Year.ToString());
            modelCalendario.ano = ano_local;
            modelCalendario.mes = mes_local;

            int cod_aluno = Int32.Parse(RouteData.Values["Id"].ToString());
            modelInscricao.id_aluno = cod_aluno;
            ViewBag.cod_aluno = cod_aluno.ToString();

            string ano_letivo = modelCalendario.getAnoLetivoAtual();
            ViewBag.ano_letivo = ano_letivo;
            ViewBag.lista_dias = modelCalendario.dadosPreenchimentoCalendario(cod_aluno, false);

            /* Lista de disciplinas a mostrar */

            modelInscricao.id_aluno = cod_aluno;

            var lista_cod_disciplina_inscrito = modelInscricao.getDisciplinaInscrito(ano_letivo);
            var lista_disciplinas = modelDisciplina.getNomeDisciplinas(lista_cod_disciplina_inscrito);
            ViewBag.lista_disciplinas = lista_disciplinas;

            List<int> cod_disciplina_escolhida = new List<int>();

            cod_disciplina_escolhida.Add(cod_disciplia);

            ViewBag.nome_disciplina = (modelDisciplina.getNomeDisciplinas(cod_disciplina_escolhida)[0].descricao);

            inscricaoMomentoAvaliacao inscricaoModel = new inscricaoMomentoAvaliacao();
            var avals = inscricaoModel.getMomentosAvalComInscricao(cod_aluno, cod_disciplia);

            var count = 0;

            foreach (var aval in avals)
            {
                count++;
            }

            if (count > 0)
            {
                ViewBag.avals = avals;
            }
            else
            {
                ViewBag.avals = null;
            }

            return View();
        }

        public ActionResult inscreverMomento(int id_momento, int cod_disciplina)
        {
            
            int cod_aluno = Int32.Parse(RouteData.Values["Id"].ToString());

            inscricaoMomentoAvaliacao inscricao = new inscricaoMomentoAvaliacao();

            inscricao.alternaEstadoInscricao(cod_aluno, id_momento);

            return RedirectToAction("verAvaliacoes", new { Id = cod_aluno, cod_disciplia = cod_disciplina });
        }

    }
}
